#include <SDL.h>
#include <iostream>
#include <string>

#include "ioManager.h"
#include "gamedata.h"
#include "clock.h"
#include "world.h"
#include "hud.h"
#include "gui.h"
#include "simulator.h"
#include "player.h"
#include "boss.h"
#include "sound.h"

class Manager
{
	public:
		Manager ();
		~Manager ();
		void play();
		bool getRestart(){return restart;}
		bool menu();
		bool start();
		void end();

	private:
		const bool env; 
		bool restart;
		const Gamedata& gdata;
		const IOManager& io;
		Clock& clock;
		SDLSound& sound; 

		SDL_Surface *screen;
		Player player;
		Boss boss;
		World worldSky;
		World worldClouds;
		World worldTrees;
		World worldGrass;
		World worldFlowers;
		Viewport& view;
		Hud hud;
 		Gui startMenu;
		Gui midMenu;
		Gui endMenu;
		SpriteManager &spriteManager;
		Simulator& simulator;
		unsigned startTime;

		Manager(const Manager&);
		Manager& operator=(const Manager&);
};
